package czolgisci.tiles;

import java.awt.Image;
import java.awt.Rectangle;
import java.awt.Point;

import utils.geom.Direction;

import czolgisci.tiles.factory.ITileFactory;

/**
 * Klasa abstrakcyjna definiująca kafelek. Wszystkie klasy kafelków (np. Czołg,
 * Ściana) muszą po niej dziedziczyć.
 * 
 * @author kasztan
 */
public abstract class ATile
{
	/**
	 * usuń instancję klasy
	 */
	public void destroy()
	{

	}

	/**
	 * @return dokładny obszar zajmowany przez obiekt klasy dziedziczącej (co do
	 *         pixela)
	 */
	public Rectangle getArea()
	{
		return null;
	}

	/**
	 * @return kierunek w którym zwraca się obiekt klasy dziedziczącej po ATile
	 */
	public Direction getDirection()
	{
		return null;
	}

	/**
	 * @return obrazek kafelka
	 */
	public Image getImage()
	{
		return null;
	}

	/**
	 * metoda abstrakcyjna
	 * 
	 * @return zwraca fabrykę abstrakcyjną wytwarzającą ten - konkretny kafelek
	 */
	public abstract ITileFactory getFactory();

	/**
	 * @return unikalne imię nadane obiektowi
	 */
	public String getName()
	{
		return null;
	}

	/**
	 * @return współrzędne pozycji
	 */
	public Point getPosition()
	{
		return null;
	}

	/**
	 * @return wymiar obszaru zajmowanego przez kafelek
	 */
	public Rectangle getSize()
	{
		return null;
	}

	/**
	 * @param rect
	 *            obszar który kafelek może zajmować (rect ma w sobie zarówno
	 *            szerokość, wysokość jak i współrzędne położenia x, y
	 */
	public void setArea(Rectangle rect)
	{

	}

	/**
	 * @param direction
	 *            kierunek w który zwraca się kafelek
	 */
	public void setDirection(Direction direction)
	{

	}

	/**
	 * @param image
	 *            obrazek reprezentujący kafelek na ekranie
	 */
	public void setImage(Image image)
	{

	}

	/**
	 * @param name
	 *            unikalne imię kafelka (może to być np. imię gracza sterującego
	 *            czołgiem)
	 */
	public void setName(String name)
	{
	}

	/**
	 * @param pt
	 *            współrzędne położenia
	 */
	public void setPosition(Point pt)
	{

	}

	/**
	 * @param rect
	 *            wymiary zajmowanego obszaru
	 */
	public void setSize(Rectangle rect)
	{

	}

}
